from flask import Blueprint, render_template, request, redirect, url_for

from models.blog import Blog, BlogComment

main = Blueprint('blog', __name__)

'''
1. 拆分有哪些页面
    1.1
    发博客 link 点进去以后呢进入发博客的页面 blog_index.html
    1.2
    具体的博客，博客的标题。 可以被点击 blog_new.html
    2.1
    博客正文， 作者，title, 时间，内容  blog_view.html
    2.2
    发表评论的窗口，发表的评论，都是针对这个博客的
    2.3
    显示所有评论的地方，这个里面会有评论
    3.1 创建blog的页面

2. 组织那些数据，把数据的操作实现
Blog数据
1. id int（能访问的前提）
2. author
3. content
4. create_time

Blog的方法有哪些
1. new出来一个blog
2. 根据blog id拿到一个blog

BlogComment
1. id
2. author
3. comment
4. create_time
5. blog_id 也应该被索引（找到对应的blog）

BlogComment操作
1. new
2. blog_id find

3. 逻辑 产品经理
    3.1 点创建blog 调到blog/new这个页面，去创建blog
    3.2 创建完毕，回到index
    3.3 点击某一个blog，进入blog的详细页
    3.4 在详情页，提交一条评论，跳转回来，显示评论
4. 开始实现代码
5. 剩下的部分一点点补全
6. 美化页面 视觉
7. 交互细节 交互
'''


@main.route('/')
def index():
    all_blog = Blog.all()
    return render_template('blog_index.html', blogs=all_blog)


@main.route('/new', methods=["GET"])
def new():
    return render_template('blog_new.html')


# /blog/1
@main.route('/<int:blog_id>', methods=["GET"])
def view(blog_id):
    comments = BlogComment.find_all(blog_id=blog_id)
    blog = Blog.find(blog_id)
    return render_template('blog_view.html', blog=blog, comments=comments)


@main.route('/add', methods=['POST'])
def add():
    form = request.form
    Blog.new(form)
    return redirect(url_for('.index'))


@main.route("/comment/new", methods=["POST"])
def comment():
    form = request.form
    BlogComment.new(form)
    return redirect(url_for('.view', blog_id=form.get("blog_id")))
